草庐IT

c++ getline和stringstream

全部标签

c++使用stringstream boost 序列化

我是boost和c++的新手,正在尝试将对象序列化为二进制,然后反序列化它。我正在使用示例中的类:http://en.highscore.de/cpp/boost/serialization.html假设这是我要序列化的类:classperson{public:person(){}person(intage):age_(age){}intage()const{returnage_;}private:friendclassboost::serialization::access;templatevoidserialize(Archive&ar,constunsignedintversio

c++ - 为什么 getline() 跳过输入,即使在 cin.clear() 之后?

所以我有一个函数可以不断跳过第一个getline并直接进入第二个。我尝试清除缓冲区,但仍然没有成功,这是怎么回事?voidgetData(char*strA,char*strB){cout 最佳答案 确保您没有使用cin>>str。在调用函数之前。如果你使用了cin>>str,然后想使用getline(cin,str),你必须先调用cin.ignore()。stringstr;cin>>str;cin.ignore();//ignores\nthatcin>>strhaslefted(ifuserpressedenterkey)ge

c++ - 有没有办法将 std::move std::string 放入 std::stringstream

在c++引用中,我没有看到std::stringstream构造函数接受std::string的右值引用。是否有任何其他帮助函数可以在没有开销的情况下将字符串move到stringstream,或者在进行这种限制的背后是否有特殊原因? 最佳答案 从C++20开始,您可以将stringmove到stringstream中:cppreferenceC++20之前的旧答案:Idonotseeastd::stringstreamconstructoracceptingrvaluereferenceofstd::string没错。即使是str

c++ - 我对 getline+strings 有什么不了解的地方?

这是我第一次使用stackoverflow。我一直无法找到我需要的有关getline的信息。我在一个简单的工程转移编程类(class)中,所以我们编写的代码非常简单。我在这里要做的就是将用户定义数量的问题和答案放入两个不同的数组中。我的while循环看起来像这样(我正在使用for循环但切换到while只是为了看看它是否会停止中断):intmain(){srand((unsigned)time(0));stringquest1[100],answ1[100];intsize1,x=0,num,count1,visit[100],shuffle[100];fstreamflashcard1

c++ - 为什么我需要写 "std::string"而不是 "std::getline()"?

考虑这段代码:#include#includeintmain(){std::stringstr;std::cout为什么我必须对string、cin和cout使用std::而不是获取行()?getline()不在标准库中吗?我实际上有点困惑,为什么我不能只编写usingnamespacestd;而不必#include标准库中的任何内容。提前致谢! 最佳答案 神奇的自动命名空间限定。这是AndrewKoenig的*错误。他考虑了为用户定义类型提供运算符的问题。并提出了根据参数解析函数的想法。例如。对于在命名空间std中定义的类型参数,

c++ - CEdit::GetLine() Windows 7

我有以下代码段,其中m_edit是一个CEdit控件:TCHARlpsz[MAX_PATH+1];//gettheeditboxtextm_edit.GetLine(0,lpsz,MAX_PATH);这在运行WindowsXP和更早版本的计算机上完美运行。我没有在Vista中对此进行测试,但在Windows7上,lpsz将垃圾unicode字符插入其中(有时还有实际文本)。知道这里发生了什么吗? 最佳答案 既然您正在使用MFC,为什么不利用它的CString类呢?这是许多程序员被MFC吸引的原因之一,因为它使处理字符串变得更加容易。

c++ - 重新使用 stringstream 对象的问题

我尝试使用安全实践来处理仅在C++中使用数字的输入,因此我使用stringstream对象:#include#include#includeusingnamespacestd;intmain(){intfirst,second;stringinput;stringstreamsstream;cout>first;cout>second;cout然而,第二次似乎给变量“second”一个任意值。这是输出:Firstinteger:11Secondinteger:22293592如果我声明两个stringstream对象并将它们分别用于两个变量,它似乎工作正常。这是否意味着我不能按照我尝试

c - GNU-getline : strange behaviour about EOF

测试为了发现getline()在遇到EOF时的行为,我编写了以下测试:intmain(intargc,char*argv[]){size_tmax=100;char*buf=malloc(sizeof(char)*100);size_tlen=getline(&buf,&max,stdin);printf("length%zu:%s",len,buf);}而input1是:abcCtrl-DEnter结果:length4:abc//noticethat'\n'isalsotakenintoconsiderationandprinted输入2:abcEnter完全相同的输出:length

c++ - 如何在不复制或查找的情况下获得 const stringstream 缓冲区的长度?

我有一个conststd::stringstream并希望找出其底层字符串缓冲区中有多少字节。我不能seekg到最后,tellg然后seekg重新开始,因为这些操作都不可用const。我不想得到str().size()因为str()返回一个拷贝,这可能不是一个微不足道的数据量。我有什么好的选择吗?(流本身以const的形式呈现给我,只是因为它是另一种类型的成员,并且我收到了对该类型对象的const引用。流表示一个“文档”,它的封装对象代表一个CGI响应,我正在尝试从Content-Length中生成准确的operatorHTTPheader行。) 最佳答案

c++ - 初始化 stringstream.str( a_value ) 和 stringstream << a_value 之间的区别

考虑:std::strings_a,s_b;std::stringstreamss_1,ss_2;//atthisstage://ss_1andss_2havebeenusedandarenowinsomestrangestate//s_aands_bcontainnon-whitespacewordsss_1.str(std::string());ss_1.clear();ss_1withwithoutspacebetweenthemss_2.str(s_a);ss_2.clear();//ss_2.str().c_str()isnows_ass_2问题:stringstream.s